package com.headfirst.dmp.report.tags

import org.apache.spark.sql.Row

/**
  * 打关键词系相关标签
  */
object Tags4KeywordsTag extends TagsTrait {

  /**
    * 打关键词标签
    *
    * @param args 传入数据为Row对象
    * @return
    */
  override def makeTags(args: Any*): Map[String, Int] = {

    //创建一个空Map，用于存储数据
    var map = Map[String, Int]()

    //将数据转换为对应类型
    val row: Row = args(0).asInstanceOf[Row]
    val stopWords: Map[String, Int] = args(1).asInstanceOf[Map[String,Int]]


    val keywords: String = row.getAs[String]("keywords")

    //处理规则：关键字字数不能小于3，且不能超过8个字符，多个关键词用"|"切分
    keywords.split("\\|")
            .filter(kw => kw.trim.length >=3 && kw.trim.length<=8  && !stopWords.contains(kw))
            .foreach(kw => map += "K"+kw -> 1)

    //返回值
    map

  }

}
